#!/bin/bash

# 确保安装git mvn 命令行
# 设计方案
project_name=jssp
download_dir=$HOME/${project_name}
git_url=https://gitee.com/xieweig/${project_name}
#核心打包后的可执行文件 全路径名和短名
CORE_FILE=
CORE_FILE_SHORT=
PID=


start() {
  isProcessing
  if (($? == 255)); then
    #准备工作
    # 第一大步骤 git克隆或拉取最新代码
    # 通过判定.git目录是否存在 确定使用clone 还是pull
    #git clone ${git_url} ${download_dir}
    if [ -d ${download_dir}/.git ]; then
      echo [Debug: Git进行代码拉取master分支]
      git pull origin master
    else
      echo [Debug: Git进行仓库克隆，默认获取master分支]
      git clone ${git_url} ${download_dir}
    fi

    # 第二大步骤 maven构建 war jar 文件
    #ls -lah
    mvn clean
    mvn package -Dmaven.test.skip=true
    #echo $?

    # 第三大步骤 确定核心可执行文件
    CORE_FILE_SHORT=$(ls ./target/ | grep .*ar$)
    echo [Debug:核心可执行文件名： ${CORE_FILE_SHORT}]
    CORE_FILE=$(realpath ./target/${CORE_FILE_SHORT})
    echo [Debug:核心可执行文件全路径名： ${CORE_FILE}]

    #第四大步骤 后台运行软件 获取软件PID
    nohup java -jar ${CORE_FILE} >/tmp/${CORE_FILE_SHORT}.log 2>&1 &
    sleep 2
    PID=$(jps | grep $CORE_FILE_SHORT | awk '{print$1}')

    echo [Debug:运行完毕 PID是 $PID]
  fi
}
stop() {

  isProcessing
  if (($? == 0)); then
    kill -9 $PID
    sleep 1
    echo [Debug: "$PID进程已经被结束"]
  fi
}
restart() {
  stop
  sleep 0.5
  start
}
# 没有进程返回255 有进程返回0
isProcessing() {

  PID=$(jps | grep ${project_name} | awk '{print$1}')
  if [ -z "$PID" ]; then
    echo [Debug: "无进程正在运行"]
    return 255
  else
    echo [Debug: "进程${PID}正在运行"]
    return 0
  fi
}


if [ ! -d ${download_dir} ]; then
  echo [Debug: "project dir is not exist, then create "]
  mkdir ${download_dir}
fi

cd ${download_dir}
echo [Debug: 进入工作目录 ${PWD}]
echo $1
case $1 in
start)
  echo start app
  start
  ;;
stop)
  echo stop app
  stop
  ;;
restart)
  echo restart app
  restart
  ;;
*)
  echo xxx
  ;;
esac
